Invio
undefined
theia 文件树打开文件要经过几道处理
记录下,需要照此写一个简化版的 menu 点击打开“页面”的功能
阅读源码技巧
找到尽可能的会命中的断点
e.g. 这里是凭感觉找到 file-service 里的 resolve
总结
看 structures
尽量找 service,一般都是自己写的没有什么 boilerplate code,不容易重名
看堆栈
点击打开 - 堆栈
tree widget
handleClickEvent
tapNode
navigator tree widget < tree widget
override tapNode
navigator model
[1]
opener service
default opener service
[2]
editor manager < bind(OpenHandler)
[3]
widget-open-handler
editor widget factory
...monaco
resources
resolver
初次打开
onActivateRequest
没问题 widget 将逻辑 delegate 给 model
↩︎
主要逻辑,根据优先级获取 OpenHandler
↩︎
调用 super(即 widget open handler)#open
↩︎
Interactive Graph